Ja, kommen wir zur Zusammenfassung. Resümee des Stoffes von heute. Nun, wir haben im wesentlichen
im ersten Teil der Veranstaltung das Konzept der Umlaufsperre kennengelernt und da gesehen,
dass es eine weitere Alternative ist, wie man wechselseitigen Ausschluss im Vergleich zum
Semmler vor, im Vergleich zum Monitor, softe gesteuert realisieren kann. Das ist ein pessimistischer
Ansatz, wie man schon so schön sagt. Jegliche Form der blockierenden Synchronisation fällt in
diese Kategorie. Das ist in der Umsetzung relativ leicht, wenn man mal von diesen Sperrprotokollen
denn halt absieht, aber der Code, den man schützt, der so häufig eben rein sequenzieller Code im
Ursprung ist, der bleibt mehr oder weniger erhalten und insofern ist dann praktisch die Anwendung
eines solchen Synchronisations Konzepts denn vergleichsweise leicht, sofern es um den Software
Entwicklungsaufwand geht. Der Problem dieses Ansatzes ist und zwar der Umlaufsperren, ist die
Störanfälligkeit, wenn wir einen hohen Wettstreit haben und da haben wir dann eben auch diskutiert,
wie dort der Zusammenhang zu den Caches zum Beispiel existiert oder etwa dieser sogenannte
Buzz Lock Barres, der aufgrund dieser atomaren Operation, atomare Rhythmo, die 5-rei zyklen
bestimmte Operationen sehr häufig mit einer hohen Frequenz möglicherweise wirksam wird und deshalb
eben auch zu großen Interferenzen führen kann, die denn einfach Prozesse, die hier mit so einem
wechselseitigen Ausschluss überhaupt gar nicht beteiligt sind, dennoch beeinträchtigen innerhalb
des Rechensystems. Und so ist man denn zu solchen Backoff-Techniken gekommen, wo man dann
Zurückhaltung ausübt, bevor man dann wiederholt versucht eben so eine atomare Operation für so
einen Sperrversuch denn zur Ausführung zu bringen. Das hat dann zu unterschiedlichen Verweilzeiten
geführt, um dann praktisch diese Konflikte bei diesen Wiederholungen denn irgendwie ein
bisschen zu vermeiden. Komplett ausschließen kann man sie nicht, aber man kann natürlich
denn schon etwas dazu beitragen, dass denn diese Störanfälligkeit nicht zu stark wird. Nun ein
Grundproblem bei allen blockierenden Synchronisationsverfahren, nicht nur hier bei der Umlaufsperre, ist eben die
hohe Verklemmungsgefahr einfach deshalb, weil man ja eine blockierende Synchronisationstechnik verwendet.
Das heißt Prozesse blockieren wirklich und müssen darauf warten, dass sozusagen eine Sperre freigegeben
wird oder dass ein kritischer Abschnitt eben frei geht, in den sie eintreten wollen, bevor sie
denn weiter vorankommen können. Wir werden in der nächsten Vorlesung diesen Aspekt gesondert
betrachten. Das ist ein großes Problem und man muss da halt eben auch entsprechende Lösungen
dann präsentieren, die dann einfach verhindern, dass so eine Verklemmungssituation nicht dazu
führt, dass das gesamte System möglicherweise nicht mehr weiter arbeiten kann. Ein anderer Aspekt ist
die nicht blockierende Synchronisation, ist einfach der Gegensatz denn wirklich dazu, wo man zwar
wechselseitigen Ausschluss verwendet, aber dieser denn halt nur noch in den einzelnen Maschinenbefehlen,
die man für die Synchronisationstechniken denn verwendet, gegeben ist. Hier noch mal zur Erwähnung
dieser wechselseitige Ausschluss, die man hier verwendet in den Maschinenbefehl, der gilt natürlich
auch bei der blockierenden Synchronisation. Es geht ja hier darum, dass man spezielle Maschinenbefehle
halt hat, die dann atomar ausgelegt sind, sodass dann jegliche Form von Synchronisationstechnik auf
den höheren Ebenen, auf der Software-Ebene im Endeffekt dann funktioniert und das gilt natürlich
auch für die nicht blockierende. Hier ist der Ansatz ein optimistisches Herangehen, wo man
denn eben eine positive Erwartung halt hat und davon ausgeht oder zumindest annimmt, dass es nicht
zu viele gleichzeitig Prozesse gibt, die einen Konflikt an einem kritischen Abschnitt oder
bezüglich einer gemeinsamen Variable sozusagen denn hervorrufen würden. Der algorithmische An-
um die algorithmische Umsetzung ist schon komplizierter, auch wenn die Beispiele,
die wir gesehen haben, nicht allzu komplex sind und durchaus halt keinen sehr großen Unterschied
zu der blockierenden Technik dargestellt haben, ist die Realität schon eine andere, wenn man denn
komplexere Datenstrukturen halt hat und die verarbeiten möchte, die synchronisieren möchte,
denn ist so eine nicht blockierende Technik ungleich komplizierter im Vergleich zu der
blockierenden Technik. Das ist so ein Hauptaspekt, das heißt also hier geht es im Wesentlichen um
die Entwicklungszeit, die man spendieren muss, um dann halt eine entsprechende funktionierende
Lösung dann herbeiführen zu können und insofern ist denn dieser Ansatz durchaus schwerer umzusetzen
als etwa die blockierende Technik. Der große Vorteil ist, diese Synchronisationstechnik ist
Presenters
Zugänglich über
Offener Zugang
Dauer
00:08:46 Min
Aufnahmedatum
2020-12-04
Hochgeladen am
2020-12-05 00:39:40
Sprache
de-DE